As the capabilities of data processing systems has grown, so too have the requirements that are tasked to these systems. Greater speed in these systems has given rise to more detail-oriented applications, greater memory capability has made memory intensive applications more attractive, and detailed applications have lead to more wide-spread use of previously inaccessible data processing abilities. With the spiraling growth in data processing ability, there has grown a need for more efficient ways of programming that promote speed as well as flexibility. Flexibility, in particular, allows applications that have been designed in varied programming languages, or operating on different platforms to be able to communicate without extensive system or file modification.
One such means of promoting flexibility within a data processing system is the use of "object-oriented" design (OOD). Object oriented programming languages are useful in removing some of the restrictions that have hampered application design due to the inflexibility of traditional programming languages.
OOD utilizes a basic element or construct known as the "object," which combines both a data structure and an intended behavior characteristic within the single element. Objects are bundles of data and the procedures which best identify the use of that data. Objects can be specific or conceptual and are often used to represent models of real-world object groupings; this has the effect of helping software applications become an organized collection of discrete objects in which data is held or moved based on the intended behavior of an object which is inherently unique. Each object knows how to perform some activity.
The objects interact and communicate with each other via messages. A message is initiated by one object for the purpose of getting a second message to perform an act such as performing the steps of a method. Information parameters may be passed along with the message so that the receiving object will have guidelines for performing its action.
Software objects share two characteristics; they all have "state" and "behavior." State is the condition of the object expressed in variables (what it knows), while behavior is implemented by performance of a method (what it can do). Packaging the object's variables, together with its methods, is referred to as "encapsulation." Encapsulation is used to hide unimportant implementation details from other objects; and, this in turn provides two primary benefits to software developers. These benefits are: (1) modularity and (2) information hiding.
Modularity of objects means that the source code for an object can be written and maintained independently of the source code for other objects, thus allowing a certain autonomy of purpose for each individual object. Information hiding, on the other hand, is the ability to keep private certain of its data and methods without effecting the other objects which may depend upon it. Common dependencies among objects can maintain communication by utilizing a public interface for information sharing.
Objects interact and communicate with each other though the use of messages. Each message has three components that are necessary for a receiving object to be able to perform a desired method; these are: (1) the object to whom the message is addressed; (2) the name of the method that is to be performed; and (3) the method required parameters. Because these three components alone represent what is required for methods to be activated, it is not required that objects be located within the same process in order for communication to take place. Message use, therefore, is the supporting means for object interaction. But to be of value to a particular application, objects must be able to be referenced.
Referencing is accomplished through indexing, addressing, or through value assignment which can be placed in a table for use as required. Objects can also be arranged by classification. Classification is based on groupings of objects based upon properties or characteristics important to an application or requirement. Each class describes a potentially infinite set of objects that comprise that class. Object interaction can be further optimized by the use of class distinction. Classes are organizational blueprints that define the variables and methods which are common to all objects of a particular group. Values for each of the variables are assigned and allocated to memory when an instance from a class is created. Additionally, methods can only be performed when a class instance has been allocated to memory. Thus, the most distinct advantage of class use is the ability to reuse the classes and thus further create more objects. Classes, in turn, can be subdivided into subclasses which inherit the state of the underlying class. The further advantage being the ability to create specialized implementations of methods.
The constant growth and expansion of software systems and the hardware platforms that support them has led to the emergence of object oriented programming which reduces time and memory capacity requirements by taking advantage of certain redundancies by treating them as unique software objects.
The advantages of objects lie in the ability of objects to link performance characteristics. This greatly optimizes the using system's ability to find data and use it effectively. Systems that utilize formats whose structure and requirements repeat, would benefit greatly from object oriented techniques. And, if the system were to be able to define its principle data requirements in the form of objects, it would inherit the advantages of the object oriented environment while maintaining the inherent system advantages.
OOD is known in the software arts and specific discussion of application design based upon OOD is not required for a thorough understanding of the applicant's claimed invention. It is, however, one object of the present claimed invention to disclose a method and system for utilizing object oriented design to effectively and efficiently link applications within an addressing system.
Addressing systems are an example of systems whose purpose is to maintain address lists, perform addressing hygiene through the use of address correction techniques, and, prepare the data for downloading to addressing printers. Addressing systems are known in the art and have developed with changes in postal service regulations (such as the United States Postal Service, or USPS) and the need to automate and accelerate to accommodate growth.
As the USPS, together with the postal services of other countries around the world, moves toward more fully automated mail handling in an effort to contain costs while processing ever increasing volumes of mail, automated equipment which sorts and processes mail on the basis of machine readable postal codes, such as the "zip code" or other forms of postal coding, play an ever more significant role. In the United States, postal service regulations provide for a "Postnet" bar code which represents the five or nine digit zip code of the destination address in a machine readable form.
Systems have been used or proposed to meet the need to produce mail pieces imprinted with the Postnet bar code, and to enable mailers to obtain the benefit of the discounts offered for such mail. One such system is described in U.S. Pat. No. 4,858,907, for a SYSTEM FOR FEEDING ENVELOPES FOR SIMULTANEOUS PRINTING OF ADDRESSES AND BAR CODES, issued to Eisner et al. (hereinafter referred to as Eisner-1) on Aug. 22, 1989. This patent discloses a system for printing envelopes with addresses, zip codes, and corresponding bar codes. The system is controlled by a computer which includes software for converting a zip code included in the address into bar code form and then adding the bar code representation to the material to be printed on the envelope.
Another example of the art is found in U.S. Pat. No. 5,326,181 for an ENVELOPE ADDRESSING SYSTEM ADAPTED TO SIMULTANEOUSLY PRINT ADDRESSES AND BAR CODES; issued on Jul. 5, 1994 to Eisner et al. (hereinafter referred to as Eisner-2). This patent teaches a method of addressing substrates with a human readable address containing a zip code and a bar code corresponding to the zip code. The method utilizes a computer and comprises several steps. These steps include: receiving in the computer a plurality of addresses, with pre-existing zip code information contained in each as complete address data, and requiring no manual inputting or identification; automatically scanning the address data in the computer to find the pre-existing zip code; automatically converting, in the computer, the pre-existing zip code into a line of corresponding bar code; and, essentially simultaneously printing the complete address, including zip code information and corresponding bar code, on a substrate, under control of the computer so that the substrate produced has human readable zip code and machine readable bar code information thereon.
Additionally, a system for printing envelopes with addresses including bar code is disclosed in commonly assigned U.S. Pat. No. 5,175,691 for a SYSTEM AND METHOD FOR CONTROLLING AN APPARATUS TO PRODUCE ITEMS IN SELECTED CONFIGURATIONS; issued on Dec. 29, 1992 to Baker et al. (hereinafter referred to as Baker), which describes a system for printing mail pieces which includes a printer for printing sheets and envelope forms and a folder-sealer mechanism for folding the envelope form around the sheets to form a mail piece, and a computer based control system for controlling the printer and folder. In the system of this application, when an operator is creating a file of letters to be printed, the operator may designate a selected field within each letter as containing the destination address. The system will then extract the information in this designated field and with it create a new page of material to be printed on the envelope form; and, if the address within the designated field includes a zip code, the system will add a corresponding barcode to the new page. The system then adds this new page to the file before the file is output.
U.S. Pat. No. 5,278,947 for a SYSTEM FOR AUTOMATIC PRINTING OF MAIL PIECES; issued Jan. 11, 1994 to Balga, Jr. et al. (hereinafter referred to as Balga), and assigned to the assignee of the present claimed invention, is for a system which includes a printer for printing text in response to the input of signals. The printer has a capability to selectively print either sheets or envelopes. The system further includes a controller for output of a sequence of signals representative of materials to be printed on a sheet which forms part of the mail piece, where the sequence includes a subset of signals representative of an address.
In accordance with another aspect of the Balga invention, the system includes a scanning mechanism for identifying a character string which conforms to a valid postal coding standard. The system further includes a mechanism for identifying the character string as a valid postal code. Additionally, the system forms the destination address to include a line including the postal code and a selected number of proceeding lines of text.
The ability to structure software coding is extremely important when linking data to be downloaded to a printer being utilized in the addressing environment. U.S. Pat. No. 5,583,970 for a PRINTER COMMAND SET FOR CONTROLLING ADDRESS AND POSTAL CODE PRINTING FUNCTIONS, issued Dec. 10, 1996 to Strobel (hereinafter referred to as Strobel), and assigned to the assignee of the present claimed invention, is instructive in this respect.
Strobel is a method and system for printing images to a substrate wherein the commands normally input by an operator, or resident within the printer, can be determined at a host data processor. The system can control address and postal code printing functions beginning at the host computer together. The system will derive printing data, including address data, from a selected application resident in the host computer. The host computer creates and then transmits printer command sets and printing data, via transmitting means to a microprocessor within the printer. The microprocessor drives a language interpreter which directs the printer commands to a parsing step for determining the address location from within the data to be printed. The language interpreter then assigns delivery point digits to a zip code that was isolated from the transmitted address data. The newly created zip code is then matched with the bar code data stored within the microprocessor's corresponding memory. A bar code corresponding to the new zip code is selected. The language interpreter then directs the printer's controller to prepare to print the address with its corresponding zip code, any graphics images that may have been included within the print data, and text, if any. The printer controller positions the bar code for printing, and then prints the bar code and address data, zip code, and any graphics images and text to an envelope or other substrate.
Thus, Strobel overcame the limitations of the prior art by providing flexibility in determining what data, and how much, may be downloaded for printing to a substrate. Flexibility is accomplished by controlling address and postal coding functions in the printer from a host computer. The invention thus simplifies the firmware required in a selected printer, or can allow the performance of additional tasks or provide for greater database functionality under the direction of the printer microprocessor. Thus, printer ROM memory can be reduced or freed up for other tasks, and RAM memory can be increased to handle more detailed data.
The addressing art can clearly benefit from a method that captures the data field of the USPS address (or of any similar postal service defined address) and employs that method within a system that links it with the benefits of methods such as Strobel. Therefore, it is an object of the present invention to provide for a means of determining postal service data requirements; creating objects derived therefrom; and, then utilizing those objects to optimize addressing systems.